package W325;

/**
 * 题目 ：到目标字符串的最短距离
 * 题目详述 ：
 *
 * 给你一个下标从 0 开始的 环形 字符串数组 words 和一个字符串 target 。环形数组 意味着数组首尾相连。
 * 形式上， words[i] 的下一个元素是 words[(i + 1) % n] ，而 words[i] 的前一个元素是 words[(i - 1 + n) % n] ，其中 n 是 words 的长度。
 * 从 startIndex 开始，你一次可以用 1 步移动到下一个或者前一个单词。
 * 返回到达目标字符串 target 所需的最短距离。如果 words 中不存在字符串 target ，返回 -1 。
 *
 */
public class ClosetTarget {
    public int closetTarget(String[] words, String target, int startIndex) {
        int min = Integer.MAX_VALUE; // 若是不存在此字符串的话，即直接返回-1.所以需要将min初始化为-1，若是遍历整个word数组没有找到对应的字符串的话，即需要去返回-1
        int sum = 0; //即，标志位用来判断遍历整个word数组是否寻找到target字符串；
        // 遍历整个word数组，寻找word数组中与target字符串相同的；
        for(int i = 0 ; i < words.length ; i++){
            System.out.println(i);
            // 若是寻找到的话，则继续执行if条件语句；
            if (words[i].equals(target)){
                // 向左进行寻找所需要的步数
                int leftMove = (startIndex - i + words.length) % words.length;
                // 向右寻找所需要的步数
                int rightMove = words.length - leftMove;
                System.out.println("左: " + leftMove + "右: " + rightMove);
                min = Math.min(min , leftMove);
                min = Math.min(min , rightMove);
                // 标志位+1
                sum++;
            }

        }
        // 即，若是sum值仍然为0的话，代表word数组中未寻找到对应target字符串；
        if (sum == 0 ){
            min = -1;
        }
        return min;
    }
}
